package br.com.serjaum.dao;


import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import br.com.serjaum.modelo.Curso;

public class CursoDAO extends DAO<Curso> {

	private Logger logger = Logger.getLogger(PessoaDAO.class);

	public CursoDAO(Session session, Class<?> classe) {
		super(session, classe);
	}
	
		
	public Curso buscaCursoById(String id) {
		
		logger.info("buscaCursoById : " + id);
		Criteria c = session.createCriteria(Curso.class);
		c.add(Restrictions.eq("id",id));
		c.list();
		return (Curso) c.uniqueResult();
		
	}
	
	public List<Curso> buscaCursoByNombre(String nombre) {
		logger.info("buscaCursoByNombre : " + nombre);
		Criteria c = session.createCriteria(Curso.class);
		c.add(Restrictions.ilike("nombreCurso", "%" + nombre + "%"));

		return c.list();
	}
	
	public List<Curso> buscaCursoByEdicion(String edicion) {
		logger.info("buscaCursoByEdicion : " + edicion);
		Criteria c = session.createCriteria(Curso.class);
		c.add(Restrictions.ilike("edicion", "%" + edicion + "%"));

		return c.list();
	}
	
	public List<Curso> buscaCursoByAnyo(int anyo) {
		logger.info("buscaCursoByAnyo : " + anyo);
		Criteria c = session.createCriteria(Curso.class);
		c.add(Restrictions.ilike("anyo", anyo));

		return c.list();
	}

	@SuppressWarnings("unchecked")
	public List<Curso> buscaCursoByFinalizado(boolean finalizado) {
		logger.info("buscaCursoByFinalizado : " + finalizado);
		Criteria c = session.createCriteria(Curso.class);
		c.add(Restrictions.ilike("finalizado", finalizado));

		return c.list();
	}
	
	@SuppressWarnings("unchecked")
	public List<Curso> buscaCursoByIdNombreEdicionAnyoFinalizado(String id, String nombre, String edicion, int anyo, boolean finalizado) {
		logger.info("buscaCursoByIdNombreEdicionAnyoFinalizado : " +  id + edicion + anyo + finalizado);
		Criteria c = session.createCriteria(Curso.class);
		
		if (id!=null)
			c.add(Restrictions.eq("id",id));
		if (edicion!=null)
			c.add(Restrictions.eq("edicion",edicion));
		if (nombre!=null)
			c.add(Restrictions.eq("nombreCurso",nombre));
		if (edicion!=null)
			c.add(Restrictions.eq("edicion",edicion));
		if (anyo!='0')
			c.add(Restrictions.eq("anyo",anyo));
		
		c.add(Restrictions.eq("finalizado",finalizado));
		

		return c.list();
	}
	
}